1. Field of the Invention
This application relates to systems and methods for storing electronic data, more particularly to database architecture.
2. Description of Related Art
At the heart of many modern computer systems lies a vital software component called a database management system, whose function is to store and retrieve data. Database management systems range in scale from the simple file manager found on every personal computer to highly complex systems spanning many computers, capable of storing huge volumes of data and affording simultaneous access to thousands of users.
Three approaches to database management and architecture were proposed and developed in the latexe2x80x941960s and early 1970s: the network model, the hierarchical model and the relational model. The relational model won the race to achieve widespread commercial acceptance, and today, together with SQL, its data sub-language, it is the standard used by transaction processing and information systems throughout commerce, industry and government. The network model and the hierarchical model achieved some early commercial success, but then largely fell by the wayside, although implementations of both are still in use today in some mainframe installations.
In the late 1980s and early 1990s, the object model of data emerged as the single modern challenger to the relational model. The object model first appeared as an adjunct to object-oriented programming languages, in response to the need for computer-aided design applications to store complex diagrams. During the 1990s, the role of object orientation expanded from its origin as a better programming methodology to a guiding philosophy for a wide range of software and business disciplines. Proponents of the object model of data exploited this wave of enthusiasm to build a strong market profile, and for a brief period the object model was widely perceived as the successor to the relational model.
Many of the established relational database vendors have begun to incorporate some features of the object model into their relational products. These hybrid systemsxe2x80x94often called Universal Serversxe2x80x94are described as object/relational, and some commentators argue that this represents the next major data model, while others argue that they are still predominantly relational, with a few of the features of the object model somewhat inelegantly grafted on.
A frequently cited limitation of the relational model is its inability to deal with complex data structures such as text, sounds, and images that are typical of multimedia applications. However, the relational model perpetuates three much more fundamental limitations in programming practice that the market has yet to challenge, even though these limitations significantly increase the cost of computer systems and constrain their ability to enhance competitive edge. These three limitations are:
1. Most new relational database applications need a new set of programs written from scratch, because a program written to use one database design may not be reused with another. This creates a need for a never-ending supply of new programs, the development and maintenance of which is labour-intensive and expensive.
2. Relational database applications have difficulty recording a piece of information about an individual thing that is not relevant to every other thing of the same type, so applications have to store the same information about every customer, order, product and so on. This restriction may limit the ability to continually improve the quality of customer service, because relational database applications often are unable to record and take account of the needs of individual customers.
3. In the relational world, identical types of information in two databases may be incompatible: a customer in one database may have different columns in a different order from a customer in another database. Consequently it is difficult, and often impossible, to amalgamate two databases or develop applications that use information from many databases.
A data management system which solves these and other problems will allow a more unified approach to programming, increase the utility of databases, and foster new growth in computational possibilities.
The present invention relates to a database architecture, referred to herein as the associative model, which stores data as a web of items, relationships between items, relationships between relationships and items, and relationships between relationships and relationships. Using the associative model, it is possible to reuse applications with different databases, merge databases easily, and store data about a wide variety of items without restraints inherent in the relational model.
Thus, in one embodiment, the invention provides a system for storing data, including a plurality of entities, and a plurality of relationships, each relationship defining a nexus between at least two entities. In certain embodiments, each entity is associated with a unique identifier. In certain embodiments, each relationship is associated with a unique identifier.
In certain embodiments, the system further includes a plurality of qualifiers, each qualifier defining a nexus between an entity and a relationship or between two relationships. In certain embodiments, the plurality of qualifiers includes a correcting qualifier which defines one relationship as correcting a previous relationship. In certain embodiments, the plurality of qualifiers includes an updating qualifier which defines one relationship as updating a previous relationship, e.g., by including a time from which the updating qualifier is effective.
In certain embodiments, the plurality of entities includes an entity representing an abstract category. In certain such embodiments, the plurality of relationships includes a relationship defining a nexus between at least two abstract categories.
In certain embodiments, each entity represents a unique entity. In other embodiments, two entities which represent one unique entity are related by an relationship which defines the nexus between the two entities, such as equivalence.
In another aspect, the present invention relates to a system for storing data, having a plurality of items, each item representing an entity or a verb, and a plurality of links, each link representing an association defined by a verb and at least two entities. In certain embodiments, each item and each link is associated with a unique identifier.
In certain embodiments, the method further comprises a plurality of qualifying links, each qualifying link representing an association defined by a verb, a link, and an entity or by a verb and two links. In certain embodiments, the plurality of qualifying links includes an updating qualifying link which defines an existing link as being superseded by a subsequent link, e.g., by indicating a time at which the updating qualifying link takes effect.
In certain embodiments, the plurality of items includes an item representing an abstract category. In certain such embodiments, the plurality of links includes a link representing an association defined by a verb and at least two items representing abstract categories.
In certain embodiments, each item represents a unique entity or verb. In certain other embodiments, two items which represent one unique entity are included in a link which includes a verb that defines the nexus between the two entities, such as equivalence.
In another aspect, the invention relates to method for storing data by providing a plurality of entities, and creating a plurality of relationships, each relationship defining a nexus between at least two entities. In certain embodiments, the method further includes assigning to each entity a unique identifier. In certain embodiments, the method further comprises assigning to each relationship a unique identifier.
In certain embodiments, the method further includes creating a plurality of qualifiers, each qualifier defining a nexus-between an entity and a relationship or between two relationships. In certain embodiments, creating a plurality of qualifiers includes creating a correcting qualifier which defines one relationship as correcting a previous relationship, e.g., by defining one relationship as updating a previous relationship, such as by assigning a time from which the updating qualifier is effective.
In certain embodiments, creating a plurality of entities includes creating an entity representing an abstract category. In certain such embodiments, creating a plurality of relationships includes creating a relationship defining a nexus between at least two abstract categories.
In certain embodiments, the method includes creating a relationship between two entities which represent one unique entity, e.g., by defining the two entities as equivalent.
In another aspect, the invention provides a method for storing data by providing a plurality of items, each item representing an entity or a verb, and creating a plurality of links, each link representing an association defined by a verb and at least two entities. In certain embodiments, the method further includes assigning to each item and to each link a unique identifier.
In certain embodiments, the method further includes creating a plurality of qualifying links, each qualifying link representing an association defined by a verb, a link, and an entity or by a verb and two links. In certain embodiments, creating a plurality of qualifying links includes creating an updating qualifying link which defines one link as being superseded by a subsequent link, e.g., by creating a temporal qualifying link which indicates a time at which the updating qualifying link takes effect.
In certain embodiments, creating a plurality of items includes creating an item representing an abstract category. In certain such embodiments, creating a plurality of links includes creating a link representing an association defined by a verb and at least two items representing abstract categories.
In certain embodiments, the method further includes linking two items which represent one unique entity by a link which includes a verb that defines the nexus between the two entities, e.g., by defining the two entities as equivalent.